package cn.zzz.openplatform.amap.model.direction;

import cn.hutool.core.annotation.Alias;
import cn.zzz.openplatform.amap.model.AmapOpenApiResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 步行路径规划响应结果
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AmapWalkingDirectionResponse extends AmapOpenApiResponse {
    /**
     * 路线信息
     */
    private List<Route> route;

    @Data
    public static class Route {
        /**
         * 起点坐标
         */
        private String origin;

        /**
         * 终点坐标
         */
        private String destination;

        /**
         * 步行方案列表
         */
        private List<Path> paths;
    }

    @Data
    public static class Path {
        /**
         * 起点和终点的步行距离，单位：米
         */
        private Integer distance;

        /**
         * 步行时间预计，单位：秒
         */
        private Integer duration;

        /**
         * 返回步行结果列表
         */
        private List<Step> steps;
    }

    @Data
    public static class Step {
        /**
         * 路段步行指示
         */
        private String instruction;

        /**
         * 道路名称
         */
        private String road;

        /**
         * 此路段距离，单位：米
         */
        private Integer distance;

        /**
         * 方向
         */
        private String orientation;

        /**
         * 此路段预计步行时间
         */
        private Integer duration;

        /**
         * 此路段坐标点
         */
        private String polyline;

        /**
         * 步行主要动作
         */
        private String action;

        /**
         * 步行辅助动作
         */
        @Alias("assistant_action")
        private String assistantAction;

        /**
         * 这段路是否存在特殊的方式
         */
        @Alias("walk_type")
        private Integer walkType;
    }
}
